﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Microsoft.Xna.Framework;
using Microsoft.Xna.Framework.Input;
using QS.Input;
using Microsoft.Xna.Framework.Graphics;

namespace QS
{
    public abstract class QCamera
    {
        public virtual Vector3 Position { get; set; }

        protected Matrix m_ViewMatrix;
        protected Matrix m_ProjectionMatrix;

        protected GraphicsDevice m_GraphicsDevice;

        public QCamera(GraphicsDevice device)
        {
            m_GraphicsDevice = device;
        }

        public  virtual void Update(GameTime time)
        {
            ProcessKeyboard(QKeyboardOperations.KeysDown);
            ProcessMouse(QMouseOperations.MouseState);
        }

        protected virtual void ProcessMouse(MouseState mouseState)
        {
        }

        protected virtual void ProcessKeyboard(List<Keys> keys)
        {
            
        }

        public Matrix ViewMatrix
        {
            get
            {
                return this.m_ViewMatrix;
            }
        }

        public Matrix ProjectionMatrix
        {
            get
            {
                return this.m_ProjectionMatrix;
            }
        }
    }
}
